<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        async function async1() {
            console.log('async1 start');
            await async2();
            console.log('async1 end');
        }
        async function async2() {
            console.log('async2');
            return 'async2 >>>'
        }

        console.log('script start');

        setTimeout(function () {
            console.log('setTimeout');
        }, 0)

        async1();

        new Promise(function (resolve) {
            console.log('promise1');
            resolve();
            console.log('promise2')
        }).then(function () {
            console.log('promise3');
        });

        console.log('script end');

        // 看看这段代码会依次输出什么?
        // console.log('aaa')
        // setTimeout(() => {
        //     console.log('bbb')
        // }, 1000)
        // const start = new Date()
        // while (new Date() - start < 3000) { }
        // setTimeout(() => {
        //     console.log('ccc')
        // }, 0)
        // const p1 = new Promise((resolve, reject) => {
        //     console.log('ddd')
        //     resolve()
        //     console.log('eee')
        // })
        // p1.then(() => {
        //     console.log('ggg')
        // })
        // console.log('fff')

    </script>
</body>

</html>